package api;

import com.fasterxml.jackson.databind.ObjectMapper;
import dao.Problem;
import dao.ProblemDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

// 向服务器请求，题目列表
// 向服务器请求，获取指定题目的详细信息
// 为什么要写在同一个中，因为其实二者是非常相似的，只是在请求时有无query String的差别

@WebServlet("/problem")
public class ProblemServlet extends HttpServlet {
    private ObjectMapper objectMapper = new ObjectMapper(); // 后期转换格式时使用

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 查询所有题目
        // 设置状态码
        resp.setStatus(200);
        // 设置响应的body类型:注意放的位置！！
        resp.setContentType("application/json;charset=utf8");
        ProblemDao problemDao = new ProblemDao();

        // 尝试获取id参数，如果能获取到就说明是题目详情；如果获取不到则是题目列表
        String idString = req.getParameter("id");
        if (idString==null || "".equals(idString)) {
            // 没有参数，则是列表
            List<Problem> problems = problemDao.selectAll();
            // 转为JSON格式的数据
            String respString = objectMapper.writeValueAsString(problems);
            resp.getWriter().write(respString);  // 设置HTTP响应的body部分
        } else {
           // 有参数 则是获取题目详情
           Problem problem = problemDao.selectOne(Integer.parseInt(idString));
           String  respString = objectMapper.writeValueAsString(problem);
           resp.getWriter().write(respString);
        }
    }
}
